package com.literaryfamily.literaryfamily.service.book;

import com.literaryfamily.literaryfamily.entity.BookLogistics;

import java.util.List;

/**
 * 物流查询接口
 * 所有涉及读写的方法都需要抛出 WriteError 数据库读写错误异常(这个是运行时异常,只需要抛出不需要处理)
 * 此接口所有方法均不检查用户身份,应该验证身份后在进行检查
 * todo 这玩意暂时别动,我还没找到物流接口可以进行测试
 *
 * @author 滑稽/因果报应
 */
public interface LogisticsInquiryService {
    /**
     * 根据物流单号查询物流信息
     * @param trackingId 第三方物流单号
     * @return 封装好的查询信息集合
     */
    List<BookLogistics> selectLogisticsById(String trackingId);

    /**
     * 根据买卖单号查询物流信息
     *
     * @param saleOrdersId       买卖单号
     * @param logisticsCompanyId 物流公司代码
     * @return 封装好的查询信息集合
     */
    List<BookLogistics> selectLogisticsBySaleOrders(String saleOrdersId, int logisticsCompanyId);

    /**
     * 更新物流信息(系统自动更新)
     *
     * @param trackingId 第三方物流单号
     * @return 更新并记录新的物流信息集合
     */
    List<BookLogistics> updateLogisticsMsg(String trackingId);

    /**
     * 用户手动输入物流单号信息
     *
     * @param saleOrderId 买卖单
     * @param trackingId  物流单
     * @return 查询后的物流信息集合
     */
    List<BookLogistics> bindLogisticsToOrder(String saleOrderId, String trackingId);

}